package com.molichuxing.services.infrastructure.service;

import com.molichuxing.framework.dto.Paged;
import com.molichuxing.services.business.dto.request.modify.MaintenanceModifyDto;
import com.molichuxing.services.infrastructure.dto.request.create.MaintenanceLogCreateDto;
import com.molichuxing.services.infrastructure.dto.response.MaintenanceDto;
import com.molichuxing.services.infrastructure.dto.response.MaintenanceLogDto;

import java.util.List;
import java.util.Map;

/**
 * <p>
 * 保养历史表 服务类
 * </p>
 *
 * @author xuelin yi
 * @since 2019-09-23
 */
public interface MaintenanceLogService {

    /**
     * 根据条件查询保养审核信息列表分页
     * type 保养类别：1-待保养，0-待审核，8-审核记录
     * list<Integer> vehicleIds   车辆id集合
     * totalStartMileage    已行驶开始里程
     * totalEndMileage    已行驶结束里程
     *  maintainableStartDate   开始保养时间
     *  maintainableEndDate   结束保养时间
     * @param map
     * @param pageNum
     * @param pageSize
     * @return
     */
    public Paged<MaintenanceLogDto> getMaintenanceLogPage(Map<String, Object> map, Integer pageNum, Integer pageSize);


    /**
     * 根据主键查询保养历史信息
     * @param maintenanceLogId
     * @return
     */
    public MaintenanceLogDto getMaintenanceLogById(Integer maintenanceLogId);

    /**
     * 根据保养ID获取保养信息
     * @param maintenanceLogId
     * @return
     */
    public MaintenanceLogDto getMaintenanceLogByPId(Integer maintenanceLogId);

    /**
     * 获取审核记录的总数
     * @param map
     * @return
     */
    public Integer getCount(Map<String, Object> map);

    /**
     * 根据车辆id和状态获取保养信息
     * @param carId
     * @param statusList
     * @return
     */
    public List<MaintenanceLogDto> getMaintenanceLogList(Integer carId, List<Integer> statusList);


    /**
     * 创建保养历史表
     * @param maintenanceLogCreateDto
     * @return
     */
    public int createMaintenanceLog(MaintenanceLogCreateDto maintenanceLogCreateDto);



    /**
     * 更新保养历史表
     * @param maintenanceLogCreateDto
     * @return
     */
    public int updateById(MaintenanceLogCreateDto maintenanceLogCreateDto);


    /**
     * app保养列表
     * userId 用户id
     * @return
     */
    public Paged<MaintenanceLogDto> getMaintenanceLogAppPage(Map<String, Object> map,Integer pageNum, Integer pageSize);

    /**
     * 审核保养信息
     * @param modifyDto
     * @return
     */
    public int modifyMaintenanceCheck(MaintenanceModifyDto modifyDto);
}
